{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "000c731a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam1</th>\n",
       "      <th>Exam2</th>\n",
       "      <th>Pass</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34.623660</td>\n",
       "      <td>78.024693</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.286711</td>\n",
       "      <td>43.894998</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35.847409</td>\n",
       "      <td>72.902198</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.182599</td>\n",
       "      <td>86.308552</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.032736</td>\n",
       "      <td>75.344376</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Exam1      Exam2  Pass\n",
       "0  34.623660  78.024693     0\n",
       "1  30.286711  43.894998     0\n",
       "2  35.847409  72.902198     0\n",
       "3  60.182599  86.308552     1\n",
       "4  79.032736  75.344376     1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#加载数据\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "data  = pd.read_csv('examdata.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "42b82de9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 数据可视化\n",
    "from matplotlib import pyplot as plt\n",
    "fig1 = plt.figure()\n",
    "plt.scatter(data.loc[:,'Exam1'], data.loc[:,'Exam2'])\n",
    "plt.xlabel('Exam1')\n",
    "plt.ylabel('Exam2')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1628fcf4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     False\n",
      "1     False\n",
      "2     False\n",
      "3      True\n",
      "4      True\n",
      "      ...  \n",
      "95     True\n",
      "96     True\n",
      "97     True\n",
      "98     True\n",
      "99     True\n",
      "Name: Pass, Length: 100, dtype: bool\n"
     ]
    }
   ],
   "source": [
    "#标记数据，将通过的标记为true\n",
    "mask = data.loc[:,'Pass']==1\n",
    "print(mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1adb3505",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1zFmzBhuuOEGnnnmGUaMGMGxxx7LOeecw4c+9CFWr17NKaecAsD+++/PD37wA0488UQ+85nPMG3aND760Y/yiU98ouH4Aax/JjyPOjo6PNGL7PTvXi7drDayLfGJZcnGzAVPs2GYN7S2kSP4xkXHB5uQJ3U+XrYVgAGvLTi3qc9V6fUaP6aN5zrPbOpzDWf16tUcc8wxVT8+ibmQdevWcd5557Fq1arhH5yicq+NmS13945yj9dIYShD7V5WUiiccmeQI/cx9h+1L1t27MzFCO2IMW1l36iTGN0kecadtNnTxwf9c8ySksJQtHu5pRShTJfmG3URXq9mmjhxYnCjhHooKQwlo93Lkp28n0Gm/Uad99dLPkhJYSizbiw/p5Dg7mWRRumNWhqhJalDyWD3sohIljRSGE7Ku5dFqpHHncSSDxopiORMXncSF93ChQs55phjuPTSS8v+f1dXF9dccw0A99xzD1dffXVNX3/ixIn89re/bTjO4WikIJIzaW5Qk+rdfvvtPPHEExWvh9zR0UFHR9mtAUHRSEEkZ/K0kzjLLrNDavJ11r/whS/wm9/8hgsuuIBvfvObnHrqqUyfPp1TTz11oKX1s88+y3nnnfeBz+3t7eXP/uzPmDFjBjNmzOC5554DYPPmzZx11llMnz6dK664grQ2GispiORMXhokBlvmSuA663fccQdHHHEEzzzzDFdeeSXLli2ju7ubW265ha9+9atDfu61117Lddddx4svvsj999/P5z73OQC+9rWv8fGPf5zu7m4uuOAC1q9fX3d8tVD5SCRn8rKTONgyV8KdCrZu3crcuXNZu3YtZsbOnTuHfPxPfvITfvWrXw3cf+edd9i2bRvLli3jgQceAODcc8/loIMOaji2aigpiORMXnYSB1vmSrhTwQ033MAZZ5zBgw8+yLp16zj99NOHfPz777/P888/T1vbB0d6SbTGHo7KRyI5NHv6eJ7rPJPXFpzLc51nBpcQAA5sG1nT8dRU6kjQpE4FW7duZfz46Odxzz33DPv4s846i+9+97sD91esWAHAaaedxg9/+EMAnnjiCd5+++2mxDccJQURAZo/KVzpJDeDk9+9JXyd9a985SvMnz+fmTNnsnv38NfnWLhwIV1dXbS3t3PssccOXJrzpptuYtmyZZx44oksWbKEo446qinxDSeT1tlmdi3weaKO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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig2 = plt.figure()\n",
    "passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])\n",
    "failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,'Exam2'][~mask])#将标记取反，会自动改变颜色\n",
    "plt.xlabel('Exam1')\n",
    "plt.ylabel('Exam2')\n",
    "plt.legend((passed,failed),('passed','failed'))#加标记\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "55f8b858",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam1</th>\n",
       "      <th>Exam2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34.623660</td>\n",
       "      <td>78.024693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.286711</td>\n",
       "      <td>43.894998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35.847409</td>\n",
       "      <td>72.902198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.182599</td>\n",
       "      <td>86.308552</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.032736</td>\n",
       "      <td>75.344376</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Exam1      Exam2\n",
       "0  34.623660  78.024693\n",
       "1  30.286711  43.894998\n",
       "2  35.847409  72.902198\n",
       "3  60.182599  86.308552\n",
       "4  79.032736  75.344376"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = data.drop(['Pass'],axis = 1)\n",
    "y = data.loc[:,'Pass']\n",
    "x1 = data.loc[:,'Exam1']\n",
    "x2 = data.loc[:,'Exam2']\n",
    "x.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b3f2c67f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#训练模型\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "LR = LogisticRegression()\n",
    "LR.fit(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7ea80977",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1\n",
      " 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 1\n",
      " 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1]\n"
     ]
    }
   ],
   "source": [
    "#查看结果\n",
    "y_predict = LR.predict(x)\n",
    "print(y_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "320c9ab3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.89\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "accuracy = accuracy_score(y,y_predict)\n",
    "print(accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "361816de",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1]\n"
     ]
    }
   ],
   "source": [
    "#exam1 = 70 exam2 = 62\n",
    "y_test = LR.predict([[70,65]])\n",
    "print(y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "96830b01",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-25.05219314] 0.20535491217790372 0.20058380395469036\n"
     ]
    }
   ],
   "source": [
    "theta0 = LR.intercept_\n",
    "theta1,theta2 = LR.coef_[0][0],LR.coef_[0][1]\n",
    "print(theta0,theta1,theta2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "505c71f8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     89.449169\n",
      "1     93.889277\n",
      "2     88.196312\n",
      "3     63.282281\n",
      "4     43.983773\n",
      "        ...    \n",
      "95    39.421346\n",
      "96    81.629448\n",
      "97    23.219064\n",
      "98    68.240049\n",
      "99    48.341870\n",
      "Name: Exam1, Length: 100, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "x2_new = -(theta0+theta1*x1)/theta2\n",
    "print(x2_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e928657d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig3 = plt.figure\n",
    "passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])\n",
    "failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,'Exam2'][~mask])#将标记取反，会自动改变颜色\n",
    "plt.plot(x1,x2_new)\n",
    "plt.xlabel('Exam1')\n",
    "plt.ylabel('Exam2')\n",
    "plt.legend((passed,failed),('passed','failed'))#加标记\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "1dc9d878",
   "metadata": {},
   "outputs": [],
   "source": [
    "x1_2 = x1*x1\n",
    "x2_2 = x2*x2\n",
    "x1_x2 = x1*x2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "9c1b82ed",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           x1         x2         x1_2         x2_2        x1_x2\n",
      "0   34.623660  78.024693  1198.797805  6087.852690  2701.500406\n",
      "1   30.286711  43.894998   917.284849  1926.770807  1329.435094\n",
      "2   35.847409  72.902198  1285.036716  5314.730478  2613.354893\n",
      "3   60.182599  86.308552  3621.945269  7449.166166  5194.273015\n",
      "4   79.032736  75.344376  6246.173368  5676.775061  5954.672216\n",
      "..        ...        ...          ...          ...          ...\n",
      "95  83.489163  48.380286  6970.440295  2340.652054  4039.229555\n",
      "96  42.261701  87.103851  1786.051355  7587.080849  3681.156888\n",
      "97  99.315009  68.775409  9863.470975  4730.056948  6830.430397\n",
      "98  55.340018  64.931938  3062.517544  4216.156574  3593.334590\n",
      "99  74.775893  89.529813  5591.434174  8015.587398  6694.671710\n",
      "\n",
      "[100 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "x_new = {'x1':x1,'x2':x2,'x1_2':x1_2,'x2_2':x2_2,'x1_x2':x1_x2}\n",
    "x_new = pd.DataFrame(x_new)\n",
    "print(x_new)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "21f6c13a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#创建新的模型\n",
    "LR2 = LogisticRegression()\n",
    "LR2.fit(x_new,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ca0a383d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0\n"
     ]
    }
   ],
   "source": [
    "y2_predict = LR2.predict(x_new)\n",
    "accuracy2 = accuracy_score(y,y2_predict)\n",
    "print(accuracy2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e6fc5b2a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-8.95942818e-01, -1.40029397e+00, -2.29434572e-04,\n",
       "         3.93039312e-03,  3.61578676e-02]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LR2.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "e0a8c3e1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     34.623660\n",
      "1     30.286711\n",
      "2     35.847409\n",
      "3     60.182599\n",
      "4     79.032736\n",
      "        ...    \n",
      "95    83.489163\n",
      "96    42.261701\n",
      "97    99.315009\n",
      "98    55.340018\n",
      "99    74.775893\n",
      "Name: Exam1, Length: 100, dtype: float64 63    30.058822\n",
      "1     30.286711\n",
      "57    32.577200\n",
      "70    32.722833\n",
      "36    33.915500\n",
      "        ...    \n",
      "56    97.645634\n",
      "47    97.771599\n",
      "51    99.272527\n",
      "97    99.315009\n",
      "75    99.827858\n",
      "Name: Exam1, Length: 100, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "x1_new = x1.sort_values()\n",
    "print(x1,x1_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "0092861c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.06202446] -0.8959428182282472 -1.4002939687006586 -0.00022943457244157479 0.0039303931155959225 0.03615786759829932\n",
      "63    132.124249\n",
      "1     130.914667\n",
      "57    119.415258\n",
      "70    118.725082\n",
      "36    113.258684\n",
      "         ...    \n",
      "56     39.275712\n",
      "47     39.251001\n",
      "51     38.963585\n",
      "97     38.955634\n",
      "75     38.860426\n",
      "Name: Exam1, Length: 100, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "theta0 = LR2.intercept_\n",
    "theta1,theta2,theta3,theta4,theta5 = LR2.coef_[0][0],LR2.coef_[0][1],LR2.coef_[0][2],LR2.coef_[0][3],LR2.coef_[0][4]\n",
    "a = theta4\n",
    "b = theta5*x1_new+theta2\n",
    "c = theta0+theta1*x1_new+theta3*x1_new*x1_new\n",
    "x2_new_boundary = (-b+np.sqrt(b*b-4*a*c))/(2*a)\n",
    "print(theta0,theta1,theta2,theta3,theta4,theta5)\n",
    "print(x2_new_boundary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "1108eded",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU9bn48c+TyR4gISQsCVtAZA8JJixirYpKqyju4tLys1St1avFXhXsVandUGxrrbVea11utSpViiIuKC6oZQskBBCQHRICCYGELYEs398fM4khTJKZzHLOZJ7365XXzJxZzjOTmfOc7y7GGJRSSimACKsDUEopZR+aFJRSSjXSpKCUUqqRJgWllFKNNCkopZRqFGl1AL5ISUkx/fv3tzoMpZQKKatXrz5gjEl1d19IJ4X+/fuTl5dndRhKKRVSRGRXS/dp9ZFSSqlGmhSUUko10qSglFKqUUi3KSilFEBNTQ1FRUVUV1dbHYqtxMbG0rt3b6Kiojx+jiYFpVTIKyoqonPnzvTv3x8RsTocWzDGUF5eTlFRERkZGR4/T6uPlFIhr7q6mm7dumlCaEJE6Natm9elJ00KSqkOQRPC6drzmYRlUigt3sHyv/6EQ2UlVoeilFK2EpZJ4fjhcsbtf41N7z9jdShKKeUXs2fP5oknnvD5dcIyKfQfmsOG6FFkbH+Nutpaq8NRSinbCMukAHBi9I/oSRlrl7xmdShKqSBbkF/MhDmfkDFzERPmfMKC/GKfX3Pnzp0MGTKEadOmkZmZyTXXXMPx48d59NFHyc3NZcSIEdx22200rHb51FNPMWzYMDIzM5k6dSoAn3/+OVlZWWRlZZGdnc2RI0cAmDt3Lrm5uWRmZvLII4807vM3v/kNgwcP5sILL2Tz5s0+vwcI46SQOfFGSkglLu+vVoeilAqiBfnFzJq/juKKKgxQXFHFrPnr/JIYNm/ezG233UZhYSFdunThmWee4a677mLVqlWsX7+eqqoq3n33XQDmzJlDfn4+hYWFPPvsswA88cQT/OUvf6GgoIAvvviCuLg4Fi9ezJYtW1i5ciUFBQWsXr2apUuXsnr1al5//XXy8/OZP38+q1at8jl+COOkEBkVza5BP2RozQa+WfOZ1eEopYJk7oebqaqpO2VbVU0dcz/0/Uy7T58+TJgwAYCbb76ZL7/8kk8//ZSxY8cycuRIPvnkEzZs2ABAZmYmN910E6+88gqRkc4hYxMmTODee+/lqaeeoqKigsjISBYvXszixYvJzs5m9OjRbNq0iS1btvDFF19w5ZVXEh8fT5cuXbj88st9jh/COCkADJ98F0dMHEc+/ZPVoSilgmRvRZVX273RvAuoiPDTn/6UN998k3Xr1nHrrbc2jhtYtGgRd955J6tXr+ass86itraWmTNn8vzzz1NVVcW4cePYtGkTxhhmzZpFQUEBBQUFbN26lenTp7vdnz+EdVLonJjMhp5XMOrwZ+zbvcXqcJRSQZCWFOfVdm/s3r2bZcuWAfDaa69xzjnnAJCSksLRo0d58803Aaivr2fPnj2cf/75PP7441RUVHD06FG2bdvGyJEjeeCBB8jJyWHTpk1MmjSJF154gaNHjwJQXFxMaWkp5557Lv/+97+pqqriyJEjLFy40Of4Qae5oN8lM+CFN9i56Pf0vONZq8NRSgXYfZMGM2v+ulOqkOKiHNw3abDPrz106FBefvllbr/9dgYNGsQdd9zBoUOHGDlyJP379yc3NxeAuro6br75ZiorKzHGMGPGDJKSknjooYf49NNPcTgcDBs2jO9///vExMSwceNGxo8fD0CnTp145ZVXGD16NNdffz1ZWVn069eP73znOz7HDyANLeGhKCcnx/hjkZ3Vv7+CMw8vh3u/pnNish8iU0oF08aNGxk6dKjHj1+QX8zcDzezt6KKtKQ47ps0mCuy032KYefOnUyePJn169f79Dr+5u6zEZHVxpgcd48P+5ICQOfzf0bnd6awfNFfGHfjQ1aHo5QKsCuy031OAh1VWLcpNDhz9HlsjBpO3y3/R23NSavDUUqFoP79+9uulNAemhRcqnLuIM2UUvjxq1aHopRSltGk4DJq4g0USU8SVmtjs1IqfGlScHFERlI8+P8xuHYTm1Z9bHU4SillCU0KTYy49A4Ok8Dxz3Uwm1IqPGlSaCKhcxIbel3NqCNfsHfHJqvDUUqFkKeeeoqhQ4dy0003ub0/Ly+Pu+++G4CXXnqJu+66y6vX79+/PwcOHPA5zrZoUmhm4OR7qSeC3e//3upQlFIh5JlnnuG9997j1Vfdd1bJycnhqaeeCnJU3tOk0Ez39AzWJl7AyP3vUHko8FlZKWWBwnnwxxEwO8l5WTjPp5f7yU9+wvbt27n88st57LHHOPvss8nOzubss89unNL6s88+Y/Lkyac9t6ysjKuvvprc3Fxyc3P56quvACgvL+fiiy8mOzub22+/nWANNNak4EbSxJ+RINVsXPRnq0NRSvlb4TxYeDdU7gGM83Lh3T4lhmeffZa0tDQ+/fRT7rjjDpYuXUp+fj6PPvooDz74YKvPveeee5gxYwarVq3irbfe4sc//jEAv/zlLznnnHPIz8/n8ssvZ/fu3e2Ozxs6otmNM0adw4ZFmfTf+go1Jx8kKjrG6pCUUv6y5FGoaTYjak2Vc3vmdT6/fGVlJdOmTWPLli2ICDU1Na0+/uOPP+brr79uvH348GGOHDnC0qVLmT9/PgCXXnopXbt29Tk2T2hJoQU1Y++kJwdYu/hlq0NRSvlTZZF327300EMPcf7557N+/XoWLlzYOFV2S+rr61m2bFnj1NjFxcV07twZCMzU2G0JWFIQkRdEpFRE1jfZNldENolIoYj8W0SSmtw3S0S2ishmEZkUqLg8lXneteyRNBILnsPU11sdjlLKXxJ7e7fdS5WVlaSnO+dVeumll9p8/MUXX8zTTz/deLugoACAc889t7HR+v333+fQoUN+ia8tgSwpvAR8r9m2j4ARxphM4BtgFoCIDAOmAsNdz3lGRBwBjK1NEQ4He4f+iEG1W9i4crGVoSil/GniwxDVbO2EqDjndj+4//77mTVrFhMmTKCurq7Nxz/11FPk5eWRmZnJsGHDGpfmfOSRR1i6dCmjR49m8eLF9O3b1y/xtSWgU2eLSH/gXWPMCDf3XQlcY4y5SURmARhjfue670NgtjFmWWuv76+ps1tSdewI1XOHsjM+k+z73wvYfpRSvvF26mwK5znbECqLnCWEiQ/7pT3BjkJp6uwfAW+4rqcDy5vcV+TadhoRuQ24DQh45oxL6ExB72sZu+dF9mxdR58zRgZ0f0qpIMm8rsMmAV9Z0tAsIr8AaoGGUR7uWlPcFmGMMc8ZY3KMMTmpqamBCrHRoMkzqCGSkvceC/i+lFLKakFPCiIyDZgM3GS+rbsqAvo0eVhvYG+wY3MnpWdfClIuJav8PfYXbbM6HKVUC0J5FclAac9nEtSkICLfAx4ALjfGHG9y1zvAVBGJEZEMYBCwMpixtabPZQ8iwM63f2t1KEopN2JjYykvL9fE0IQxhvLycmJjY716XsDaFETkNeA8IEVEioBHcPY2igE+cvW/XW6M+YkxZoOIzAO+xlmtdKcxpu1m+yBJ6z+YlV0nMar0bQ7se4SUnsHpBaCU8kzv3r0pKiqirKzM6lBsJTY2lt69vetqG9DeR4EW6N5HTRVtXU+vf5zDqp5TGXeHLsSjlApdrfU+0hHNHup9xgjyEy8kc998DpYWWx2OUkoFhCYFL6Re+j/EcpLNC7QnklKqY9Kk4IV+g7PI7/xdMovfoLJ8v9XhKKWU32lS8FLy9x8kQar5esHjVoeilFJ+p0nBSxnDx5IfP4Hhe/7J4Ypyq8NRSim/0qTQDp0unkUXjrNhwVyrQ1FKKb/SpNAOg7K+w9q4MQzd+Q+OHg7OdLZKKRUMmhTaKXbiLJI4yrp/a2lBKdVxaFJop8E5F7A2bizDdrykbQtKqQ5Dk4IPEr73MIkcY8P8OVaHopRSfqFJwQdnjDqH/IRzGLHrHzpuQSnVIWhS8FHSJQ+TQDVfv/Vrq0NRSimfaVLwUcbwsazpcgGjit/gwL7dVoejlFI+0aTgBz2m/JJoatj25iNWh6KUUj7RpOAHfc4YyeqUyxhd9jbF2zdaHY5SSrWbJgU/GXD1o9TioGTB/1gdilJKtZsmBT9JTetPQfpUcg5/zLbC/1gdjlJKtYsmBT8ads3DHCaBo+89bHUoSinVLpoU/CgxOZWvB0xnVPUq1n+10OpwlFLKa5oU/CzrmgfYRwoxn8ymvq7O6nCUUsormhT8LDa+E3uyf86guq2see95q8NRSimvaFIIgLMm385Wx0B6r55LddUxq8NRSimPaVIIgAiHg+rzZ9OTMvL/pZPlKaVChyaFABlxzuXkx5/NqG3/y749W60ORymlPKJJIYB6Xv8kgmHv6z+zOhSllPKIJoUA6tVvMAUDbmP0sS9Y+8k8q8NRSqk2aVIIsLOmPsSuiN6kfPE/VB8/anU4SinVKk0KARYdE8uRiXNIN/vJf01nUVVK2ZsmhSAYMeEy8rpcyFm7X2LP1nVWh6OUUi3SpBAk/W/8IyeIouJfd2Pq660ORyml3ApYUhCRF0SkVETWN9mWLCIficgW12XXJvfNEpGtIrJZRCYFKi6rpPTsy9dD72HkiTWs+eBFq8NRSim3AllSeAn4XrNtM4ElxphBwBLXbURkGDAVGO56zjMi4ghgbJbIueY+tjoG0nflrzhSedDqcJRS6jQBSwrGmKVA8yPfFOBl1/WXgSuabH/dGHPCGLMD2AqMCVRsPiucB38cAbOTnJeFnnU3dURGUn/pH+hmKtjwz1kBDlIppbwX7DaFHsaYEgDXZXfX9nRgT5PHFbm2nUZEbhORPBHJKysrC2iwbhXOg4V3Q+UewDgvF97tcWI4c/R5rEqZQs6+eWxbtzywsSqllJfs0tAsbrYZdw80xjxnjMkxxuSkpqYGOCw3ljwKNVWnbqupcm730JCbnuCwdKLmnRk6vbZq1YL8YibM+YSMmYuYMOcTFuQXWx2S6uCCnRT2i0gvANdlqWt7EdCnyeN6A3uDHJtnKou82+5GYnIq27IeYEjN16x++2mPnqMHh/CzIL+YWfPXUVxRhQGKK6qYNX+d/u9VQAU7KbwDTHNdnwa83WT7VBGJEZEMYBCwMsixeSaxt3fbW5Bz+U/5OmoEZxTOpeLAvlYfqwcH61iZjOd+uJmqmlNLklU1dcz9cHPQYmiLnqx0PJGBemEReQ04D0gRkSLgEWAOME9EpgO7gWsBjDEbRGQe8DVQC9xpjLFnvcrEh51tCE2rkKLinNu9IBERxF35JJ3fuJg1r/6cMfe82uJjWzs4XJHttulFtdOC/GLmfriZvRVVJMZFcexkLTV1zprMhmQMBOVz31tR5dX2Bk3fQ1pSHPdNGhyQeBtOVhq+m8H+fFRgBLL30Q3GmF7GmChjTG9jzN+NMeXGmInGmEGuy4NNHv8bY8xAY8xgY8z7gYrLa817GgFc9hQk9gHEeXnZU5B5ndcvnTEsl7xeNzDm0LtsWvVxi49r78FBead5iayiqqYxITQI5pl6WlKcV9shuKXKUCjJKO/ZpaHZnlrqaQQwYz3MrnBetiMhNBh5028pJZmoD/6b2pqTbh/TnoOD8p67g5w7wUrG900aTFzUqcN14qIc3DdpcIvPCeaBWk9WOiZNCq3xQ0+jtiR0TqJo3CMMrNtB3r8ed/uY9hwclPc8PZgFKxlfkZ3O764aSXpSHAKkJ8Xxu6tGtlo1E8wDtZ6sdEwBa1PoEPzQ08gT2Rf/kMKCVxix+WnK9t5Malr/U+5vOAgEo544nKUlxVHcxsEz2Mn4iux0r/7PLb2HQByo75s0+JQ2BdCTlY5ASwqt8VNPo7ZIRATJ1zxJFLXsfm2G28dckZ3OVzMvYMecS/lq5gWaEALAXYksKkLoGh/l8Zm61YJZqmxPSUbZn5YUWuOnnkae6H3GCJb1u4Xxu5+j8LO3yDzvar/vQ7WuI5TIgv0evC3JKPsTY9wOHA4JOTk5Ji8vL7A7KZznbEOoLHKWECY+7FPDcmuqq46xf+5Y4uqPEXPPKhK7pgRkPyr0BavbqeqYRGS1MSbH7X2aFOxlS/5SMhZMIT/pQnJn/MvqcJQNNR8fAM4qIjtW3WjysqfWkoK2KdjMoOxzWdX3R+RWLmbNh/+wOhxlQ6EyPkBH4ocmTQo2lPOD37LVMZD+yx6kfL9/ezqp0Bcq4wNCJXmpU2lSsKGo6Bgir3mOTuY4u1++VZfvVKcI1PgAf89j1FL33ra6/SpraVKwqf5Dc1hz5j1kH/8PK9/8vdXhKBsJRLfTQFT1OMTdjPgtb1f2oEnBxsZM/QWFsWeRueFxdm1aY3U4yib8OT6goXTwszcK/F7VU9dCJ5aWtit70HEKNhbhcJD2wxepfu4cav81nRP3fUVMbLzVYQWc9lhpmz/GB7jrxdScL+0U6S2Mrk7XaTBsTUsKNpeS1o9dEx5jYN128l+8N+j7D/Z8+dpjJXg8mQDQl3aKjjJnV7itGaFJIQRkXXQjK1KuYtz+11j7yetB268VB2jtsRI8bZUCfD2Ad4RpMMLxJEWrj0LEqOlPs+2JfPovvZe9GVmkZQwJ+D6tWNwnVLpbdgStTQDoEDklGbf3/x1q02A0r7o8dqI27Ba4arOkICJdRGSgm+2ZgQlJuRMbl0DsTa8iGI6/ciPVx4+ecn8girhWHKB1OubgcTsBoEOIipDGxuBwODNu4K5UUFFV4/axHfkkpdWkICLXAZuAt0Rkg4jkNrn7pUAGpk6XPmA427/zR86o20bhc9+OXwhUEdeKA3Sw66HDrb64KXfVOwnRkdTUW7fanJU8XWQJAvcbsMP3sa2SwoPAWcaYLOAW4B8icpXrPu1sbIGsiVNZ1vtHjKl4j1XznwQCVw9vRUNhMOuhw7G+uLnmU7JXhuGZcQNP32OgfgN2+T621abgMMaUABhjVorI+cC7ItIb0M7GFhnz/+ZS+MRastb9hm8GnBWwah6rppIOVj20FW0mbbGqO27Dflv6UYdD9V1LbSxd46OIj44M+P/ELt/HtpLCEREZaIzZBmCMKRGR84AFwPBAB6fcc0RG0vfH/6T86XPo8s50zuw8l81Hok97nD9+yKHWUOgNuzVqNx830HCmCO1v6G1tXw3JJyk+iqPVtadVGzUIxW6k7dHSSnKPXDY8KL8Bu3wf26o+uoNm1UTGmCPA94AfBSoo1baklJ4cnfICXU0FvzVPEt8svYfLD9kXdmvUDlZ33ObVFIeO17SYEEKxG2l7Wd2F1i7fx1ZLCsaYtU1vi0iXJs95P1BBKc8Myj6Xldt/wZh1s5mbsojfVl+jo4C9YLc1hoN1puhpg6oAX828wK/7tjsrS8Z2+T56NE5BRG4HHgWq+LYtwQADAhSX8tCYq2ewsmgVlx56lfQJ55B10Y1WhxQy7Lb8Zkt12v4+U/Q0yYRDO4Kd2OX76NHKayKyBRhvjDkQ+JA81xFXXmuP6qpj7HniXHrVFnNg6rv0H+p2QSVlc8FaUW3CnE/anL7ariu5Kf/wx8pr24Dj/gtJ+VNsXAJdbplHtcQQ+8b17C/aZnVIqh2CVafd0qC1pLiokJ2OQvmPpyWFbOBFYAVwomG7MebuwIXWNi0pnGpb4X/o8dZVlDm6k3zXEhKTU60OSdmUzkQb3lorKXiaFFYCXwLrgMZlwIwxL/sryPbQpHC69V++w5kf3cLW6CEMmPEhsfGdrA5JKWUzrSUFTyfEqzXGBH/eZuW1EedczurDj5O94ues/cv1ZM54G0ekznsYSHrWrToST9sUPhWR20Skl4gkN/wFNDLVbmddMp2VQ+4j+9iX5P11uq7xHEB2mZpAKX/xNCncCMwC/gOsdv21u95GRGa4JthbLyKviUisK9F8JCJbXJdd2/v6Csbd8AuWpf2QseULWP7yLKvD6bB0/QfV0XiUFIwxGW7+2jVGQUTSgbuBHGPMCMABTAVmAkuMMYOAJa7bygfjfvwnViV+j/G7nmXlm3+wOpwOyS5TEyjlLx6vvCYiI0TkOhH5YcOfD/uNBOJEJBKIB/YCU4CGhuuXgSt8eP3wUjgP/jgCZic5LwvnASAREWTd+X+sjRvDWesepeCjf1ocaMdjl6kJlPIXj5KCiDwC/Nn1dz7wOHB5e3ZojCkGngB2AyVApTFmMdCjyYysJUD3FmK5TUTyRCSvrKysPSF0LIXzYOHdULkHMM7LhXc3Joao6BgG3fkm26IGMeTLu9m0YrG18XYwdlqH2A5z8avQ52lJ4RpgIrDPGHMLMAqIac8OXW0FU4AMIA1IEJGbPX2+MeY5Y0yOMSYnNdUG/fBbOEsPmiWPQk2zqoqaKud2l/hOiaTe/g5lEan0ev//sXOjduP1lyuy07n6rHQc4pw30iHC1WcFf/4cbfBW/uJpUqgyxtQDta5J8Upp/7xHFwI7jDFlxpgaYD5wNrBfRHoBuC5L2/n6wdPGWXpQVBZ5tL1rai8c0xZQQxRxb1yno579ZEF+MW+tLm5cvrLOGN5aXRz0g7E2eNtDRyiteZoU8kQkCfgbzp5Ha4CV7dznbmCciMSLiOAsgWwE3gGmuR4zDXi7na8fPB6cpQdcYm+Pt6f1H0zl1W8Qb45T9cIUDpaG3hfWbuxyMNYGb+t1lNKap72PfmqMqTDGPAtcBExzVSN5zRizAngTZ2JZ54rhOWAOcJFr8r2LXLftzcOz9HbxtFpq4sMQ1axRMyrOud2NgSPHsXvSC/So20/Fs5dwqKzE91jDmF0OxqHa4N0Rzqwb2OUEwVeeNjRPb7hujNkJbHA1PreLMeYRY8wQY8wIY8wPjDEnjDHlxpiJxphBrsuD7X39oPHiLN0r3lRLZV4Hlz0FiX0AcV5e9pRzewuGn30JWyc+T1pdMRV//R4H9u32LV437PZjD1Q8djkY26nB21Md5cy6gV1OEHzlafXRRBF5zzWieQSwHOgcwLhCw6CLabYwXatn6R7ztloq8zqYsR5mVzgvW0kIDUaeO4UtE/9Oj7oSqv/3Ivbu2ORbzE3Y7cceyHjscjC2etWw9iTdjnJm3cAuJwi+8mhSHGPMjSJyPc7qnuPADcaYrwIamd0VzoO1/4RTljoXGHWjRwflVgWyWqqJkedOYVN8J3q9+wNOvPx9dl7/L7+sxWCXBciDEY9dFkZpiMWK/bZ3bemOcmbdwC4rp/nK05XXBgH3AG8BQ4EfiEi+MSZ811hwdzaPgS1+GAeQ2NtVdeRmu58NyZnIjvi36TTvWpLemMLmyf9gcI5vSzDa7cce6HisXMLRDlpKuj+ft5YZbxS0mCiDtdJcsNjpBMEXnlYfLQQeMsbcDnwX2AKsClhUoSCQZ/NeNh77KmNYLid/+D7HJIE+C6eybqlvHb/sVoy2WzwdTUvJtc6YVqvr7FL15k9XZKfz1cwL2DHnUr6aeUHIJQTwPCmMMcYsATBOvyfcp6EIVCMztKvx2FfpA4YSc+tH7Hf0YvCSH5H/YfuXyrDbj72teOzWKB5qPEmu7toKrG4HUe61usiOiNxvjHncdf1aY8y/mtz3W2PMg0GIsUWWLrLT0EOoaRVSVNy3B+/Cec4qpsoiZ6KY+HBAD+r+UnmwjJJnLmNQzSbWjPoluVfd067XsdsaAy3F425d5CiHkBAdSWVVjS1itzt3n6E7AuyYc2lwglKtavfKayKyxhgzuvl1d7etYPnKay0d+NtKGDZ3/GglW5++kszq1SwfdC/jbmp372Pb00Xs/aNp0o0QaRzh3VR6UhxfzfStvUr554TLl6SQb4zJbn7d3W0rWJ4UWvLHES00FPdxdhkNASeqj7Ph6amMPvo5y9JvYdz0PyARHk+qGzIyZi6i7QVp9YDmDXclB02s/uGvz7a1pNDWr9y0cN3dbdXA343QFky6FxMbz6ifzWdl8mWML36R1U9eR/XxowHfb7B52tgcqt0kraBtBYETjLEdbXVJHSUih3FWB8a5ruO6Heu3KDoaf3YpbV4V1TC6GQJeFeWIjCT3rv9j2cuzGL/rWb75w/kk3TKP7ukZAd1vMLnrW+5OuPdU8rbKIty76QZKMLp7t1pSMMY4jDFdjDGdjTGRrusNt6P8FkVH488upRZPuicREYy/5THyz/4L6TW7ifjbeWzKWxKUfQdD87ParvFRREWcOko9yiEcO1Ebtr2T7DZCPZwFo3t1q20KdmfbNgXwX++j2Um4r6kT57QWQbTj61VE/+smUuvLKciazZgr/8vr17BbryR3msaYFB/F0epaauq//R+Eev24t/+DlhrjQ7WdJRS+gy0JRpuCJgW7s1mjdcWBfRT97XpGnChgeffryLn1L0RGRXv03FBsgOyIB0Rv/wetNcanh+lBNRA8TVaB7n3U8bqTdDRBHt3clqSUngz5749Y3v06xpXOY+MTF1NZvt+j54biBGh2m7LDV+35H7RWNRFqVUl2/Q56UkXXMMhyxhsFAPzx+qyAjJrWpGB3FoxubktkVDTjfvo3Vo76FYOr13Hk6XPZtm55m88LxQNsR5sioz3/A3cjwpuyw0HVU3b9DraVrILZrqNJIRS0Y2rsYBhz5d1sn/wGMeYE6W9OZuVbf8TU17f4+FA8wNptyg5fted/0LQxviVWH1Q9ZdfvYFvJKpglHE0KyidDci8k4o4v2RI7gjHrZrP6yWs5Uul+faRQPMB2tD737f0fNEz01lJisPqg6im7fgfbSlbBLOF4NHW26kACMCdTtx69SbrvY5b94xfk7nyO/U+Oo+Sy5zhz9HmnPC5UpxYOVJ97K3rB+Po/CPU1A+z6HWzrcw3mNOPa+yicBGFOpk0rFpP0/k/pZg6SN+AOxtz0SxyReu7RnJ17wbQllLt0umOX99NaHP7+vmiXVOUUpO6tlQfL2PbCdEYf/ZyNUcPpcsPfSR8w1G+v3xF0tK6uoSoQyTlQScafr9taUtBTODsJ9HTbQVrmMzE5lex7F7Dqnb8yJP9XRLx8HitHPkDuVT/zaVI9u5zR+YNde8GEG38v1drepUk9EaypQ7Sh2fZb20YAABkGSURBVC4aqnYq9wDm2zmO/Dn5XSAXBmpGIiLIveJOjk3/gh2xQxiz/pese/xC9u3e0q7X62hTLdi1F0y48Xdytus4CG9oUrCLYMxxZMFAuJ59BzHs/k9YMXQWZ1Stp9Pfv8OKeXOpr2t9ArrmOsKPrSm79oIJN/5Ozh2hBKhJwS6CUbVj0UC4CIeDsdfP5NC0z9kZO5ixX/+aTY99l93fFHj8Gh3hx9ZUR+vqGqr8nZw7QglQ2xTswp/Tbbcm8zrLBr+lDxhK2gOfsuqFexm85w1iX53I8ogRjPr+j4kb84NWnxvMLnnBotNLW8/fXVRDvcsuaFKwj4kPu+8uatEcR4Ei698kd//rHCCSb+ozGCcFlCx6mI3fbCT7xl+32BDdEX5syp78mZztOg7CG9ol1U4C3fvIDpp1i91Q35d4TpARsZ/C2LNIuuoP9D0zy+1TO1LvI6WspOMUlH24WR+ixkSwuv5MhkfsIoaTrE67icwbf0VC5yRrYlSqg9Ops5V9uGkjiZJ6xnUq5cQdq1jb9WLGl/wfx36fTd47z3rdSykUNEyBHK4ruSnvBfM7o0nBV4XznFUis5Ocl/4cV9ARTXwYItys5HryKCmly8j92etsuvQtDju6krPmAbb9biwb/vNe8OMMkI423kIFXrC/M5YkBRFJEpE3RWSTiGwUkfEikiwiH4nIFtdlVyti80owBpyFCk+TY+Z1ENP59O11JxvHZAzJvZABD65iVfbv6FJ7kOGLb6DgsUns2LAigG8gODraeAsVeMH+zlhVUvgT8IExZggwCtgIzASWGGMGAUtct+0tGAPOQoG3ybHqkPvtTcZkRDgc5E75KYn3F7Is404GVBXSb94kVv3xWvbu2OT26aFQLdPRxluowAv2dyboSUFEugDnAn8HMMacNMZUAFOAl10Pexm4ItixeS1IcwnZnrfJ0YvpNmLjOzF+2m8x/1XAirSbGFnxKSkvnc2KP//wlCkzQqVapiMMblLBFezvjBUlhQFAGfCiiOSLyPMikgD0MMaUALguu7t7sojcJiJ5IpJXVlYWvKjdCeJcQrbmbXJsx3Qbid16MP72v3D4tlXkp04h+8Aikv8+lhV/nsa+PVtDplpGp7dQ3gr2d8aKpBAJjAb+aozJBo7hRVWRMeY5Y0yOMSYnNTU1UDF6xoK5hGzJ2+Tow3Qb3dMzGHvXixycvpz8lMlkH1hI8vNj+K+jf6Kf7Dvt8XarltHpLZS3gv2dCfo4BRHpCSw3xvR33f4OzqRwBnCeMaZERHoBnxljWk2FthinEA4DztoShMV7WlKyazO7F84hq2whkdTybv14nqm9nM2mL6DrE3RUOpDRN7YbvCYiXwA/NsZsFpHZQILrrnJjzBwRmQkkG2Pub+11bJEUlJPFyXHep3kc+uRJbor4iE5SzdK6kbxkJnPZlTdx5Vl9ghaHCrxQXrXOLuyYFLKA54FoYDtwC86qrHlAX2A3cK0xxv0K8C6aFHzQAUs4C/KL+et7q7jg+PtMi/yQnnKInRF9KR0+ncxLbiU2LqHtF1G20VJpQFet853tkoK/aFJoJwure4Ll5Ilq1n7wAsmFf2Ng3XYO0oXNfady5qX30K1HmHUECEGtlQZmvFGAu6OWADvmXBq0GEOZJgV1qiCt1WwHpr6eDcsWUfvl02RVLeekiaQw8TwSJtzGkNyLfFoeVAVOa6UBQEsKPtK5j9Spwmh8hUREMGLCZWQ98CG7bvic/O5XMLjyK4a+fx07f53NinmPc/RwC4PplGVaG7Cl3XoDS5NCOArT8RX9Bmcx9s6/47hvMytHzqZOHIz9+jfI74ew4s8/ZEv+Ukx9vdVhKlofsKXdegNLq4/CURi0KXjC1NfzzZrPOPzF/zKi4hPi5CTbI/pTesa1DL5oOl1Te1kdYtjSHkaBpW0K6nQdsPeRLyoPHWDTRy/S9Zt5nFn7DSeNgw0J4yDrRoZ/9xqiY2KtDjHs6FiEwNGkoJQXdmxYwf6lL3LG/vdJoYIKOrG524V0zr2BIbkXEeFwtP0ifqAHRRUomhRUYASjtGFhiaa25iQbvlhA7Yq/M6x6DXFyklKTxPYuY0g693YGn3VBwHovafWJCqTWkkJksINRHUTzdomG6bLBfwftYOyjFZFR0YxKAerXchQhr34QDuoZffgTohctZt+iVHb2vJjkMdczKOs7fk0QrU3wp0lBBZL2PlLtE4y1JOywXoUrhk5ygpyILWRHbKOaSFY5stkfN4DRJa9z5juXU/KrISx/9qdsWrGYutpan3er6y4oq2hJQbVPMMY62GE8hZt9dZFqcusK4IEKKg+WUfD5a8RufpvRJa8Tve9VDr3fha2J43EMvYQzz55Cpy7eLyKYlhTndoCWrrugAk2TgmqfxN4tjIr241iHYOyjNYXzQCLA1J1+nyuGxORUxlx5N3A3hyvKWfefBZhN73Nm5ZckLv+Qk8t+TmFcFlUZF9Fv/NX07DvIo13fN2mw2zYFHaClAi08G5q1O6bvWhvrAP75fK0cT+Fu317EUFtzkm/ylnC44G3SSz+nj9kLwDZHBqW9zqdr1mQGZX0XR2TL52Xa+0gFivY+akoHbvmPu+QKbg6mAjk/gsl/8M8+gvF/aml+KHHAlc96HcPubwrYu/LfdNn1MYNPbsAhhkoS2Nopl/oBF9An91J69jnDT8Er1TpNCk2F0WRwlmjp80XgqudCJ/HOToKW5uKcXeHTS1cc2MfWFQsxW5aQUbGMFJyvtyuiN/uSxxJ95gUMHPN9uiR182k/oUxLSYGlXVKbskPjZUfW4udonGf8oZIUAtiekZTSk5xLbwVuxdTXs2PjKvYXfED8nqVkli0k7sBb1H0lfBM1iPLUMSSceT4Dcy4koXOSz/sOBc3HaBRXVDFr/joATQxBEH5JwerGy46upc8XQivxTnzYfTWjn9fflogIMoaPJWP4WABOVB9nw5rPOLxxCUn7lnHW3teILnmF2s8i+CbqDA6m5BJ7xnfIyL6AxG49/BpLS4J91q5jNKwVfkkhkD92bcB2vuf5t+G26kUinNUyofDZNMQW5P9nTGw8w8++BM6+BIDjRyvZvOYTjn6zlMTSVWSXzCNm36vwJeyI6E9p1ywc/caTlnk+vfoO8vsIayvO2nWMhrXCr00BAnPw1gbsb717L+S9gPs6eZdw/Wxa4uF3srrqGNsLllK56TM67VtJRvVGOonzO1dKMkWdRnCyVy5JZ55N/xHjPVqCtLWSgBVLX+pym4GnDc3BoA3Yp2o8yLVQlQTh+9k058MJRV1tLTs35nHg689xFK8k7UghaaYUgJPGwa7IDA4mjUB659B9yHj6DMo6pRtsW3MsZcxcFPSlL3Xep8DThuZg0AbsUzUczFrq6w/h+9k019p0Hm0kBUdkJANHjmPgyHGN2w7s3cXudUs5sXMlnQ8WMvzAh3QqXwBr4ZiJZWfMmRxJHkl0v1xeWh1NVU0izsO8U9P6eytGVjcc+IPVjhGoNpNQ7UGlScFftAH7dO4Odk2F82fTlJ9PKFLS+pGS9gPgBwDU19Wxa8taSjcto74oj64V6xld8gbR+15lAXAophMb6vux3mTwdX1/Nph+7KhwLjDky8hqXw6KV2SnB+UAGqg2k1DuQaVJwRdN64HjuoIjGupOfnt/AHqrhJTWDmrh/tk0FeATigiHg35DRtNvyOjGbSeqj7NlYx6vv72QgXVbGBGxk1siPiAm0jmZ33ETw+ZfZ9ArcTC/SR/AorJurDjWk8Skbh4d3EPloBionk6h3IMqfJOCr43NzeuBqw5CRBTEJUPVodDoYRNoLR3sxKGNzE0FqftrUzGx8QzKPpeRDHQevE/WEUUtg6SIEY7dTOxaSu8TWxhS/jFjOcZVALGw90R3Sj8ayLK8wUSljaBbRhbpA0eetjJdqBwUA9XTKZR7UIVnUvBmnv6Wkoe7qpH6GohOgAd2BP49hIKWDnaaEE5lUfdXOL3+vjJxKGdPuoJJru2mvp59xdvZ900eVXsKiC7fRLdjWxlRtILI4npYBTXGwU5HGgfjB3AieTDRPYeRUHmCaHpykqhT9tfeg2Kg6udbajMxOHtBtXc/oTzLbXj2PvK0p1BrvUJa6ovvh2kQOhQdu9GyEP5sTlQfp2hLIYd2rqWmZAOxFVtIrdpOWv1+IsT5u6g1EewyPdhm0thm0thuenEwti9P/OQauqY62yw8+QwC2RvJ3Ws31d792L0HlXZJbc7TeW1aSx6gXVA7CisOzh10XEvVsSPs3baONauXU7p9LQMo5gzZSz/ZR7R8e4CsoBP7InpypDaSWgOx1JAkR+kZVUXclN+f8hkEetxCQynE3T582Y+dex9pUmjO05JCa8njquc65I867Fh1cA6DcS1ND4q9u0Rx1+hohkTvo6rkG+TgVjodKKQ7B0mVylOeV2qSKIvpy7FO/ahLyuDlTRHsNt3ZZXpwjG+rX/w9VsKKMRlW0XEKzXnasNdarxAL64GVH/kwRqBd2hrUF+yxGwEsJbXZrdR10nXExLLPJHOYeE6aKCKpo7Op5YyDn5N8cCHjo799ygHThT2mO7tNd/ZH9GTlW98QlzqApLQBdO89kJjY+HbHG8rtAP4UnknB0wN6W8kj8zpNAqEumIMOW1u4p0Ewx2540+EiEFwnXZ2lms6y99vtccmNnTUOV5Tz3uf/4T+r8kg3++gjpfSRUrJkK+ksJ3Ld/FNesoyulEf25FhcL0527k1EUl/iUjNITDuD7r0HEpfQucVwdLU7J8uqj0TEAeQBxcaYySKSDLwB9Ad2AtcZYw619hpBmeYihBsDlQeCWY3T4loTLsGufrS6CqtwHrx956lje8DZtfuKZ075HNzVz186PIWyvTs5tHcbx0u3U3twN47De4iv2kvXkyWk1h84pR0D4CBdOBDZk6OxPTnZqQ8kphOd3JfO3fvRtVcGS4sNv/9oqy3bAfzJlm0KInIvkAN0cSWFx4GDxpg5IjIT6GqMeaC117DV3EcqNAWzTaHFNiqcB+Jgn3AEcCEhjz2W4Rzj05wfElNdbS0H9u3iUPE2ju53Jo2Iw7uJPb6XridKSK0vI1ZqTnnOSRPJgYhuVESmcjy2B7UJPZ2Jo2s68Sl9SOrRj249+hAVHeNTbFazXZuCiPQGLgV+A9zr2jwFOM91/WXgM6DVpKDCnD9KccFsG2qxjcqixmU7TM1S1UJlgB+q7xyRkfToPZAevQe6vd/U13PwQAkHS3ZwZP9OTpTvxhwuJupoCfHV++l1dD2phz8nel/tKc+rN8IBSaTC0Y2j0amciOtOfUIPIrr0IqZrGgnd0kns3ofk7ulERkW73bedWdWm8CRwP9C0gq+HMaYEwBhTIiLdLYlMhQZ/1ocHq23IgpHLto/HwsQkEREkd08nuXs6cI7bx5j6eg6V7+dgyQ6OHtjNiYN7qavci+PYPmKq9tO5uoS+xzeQfPDIac+tN0K5dKHCkcyxqG6ciEmhNr470rk7kV16EJvUk07d0khMSScxuTsRDkeA37Fngp4URGQyUGqMWS0i57Xj+bcBtwH07dvXz9GpkBHsXkP+YLcea3aIxw6JqRUSEUHX1F6uwXZnn3pnkxOTGhPBQbpQGdGVY2dM5mRUIvVH9hFxrJSY6jLiT5bTvXonyRWHTmvnAOeo8HLpwmFHV1cCSaYuLgUSUnB07k50Yg/iu/akc3JPklJ6ERvfKXDvOdhtCiLyO5zTN9YCsUAXYD6QC5znKiX0Aj4zxrTa7K9tCmHMDvXhyj9CtTOHtw31hfMwb/8Xh2sjqDAJHDVxVDviqemRjXFE4zheRsyJcuJrDtKptoKupuK0No8Gx00M67tdzJi7X2lX6LZqUzDGzAJmAbhKCv9tjLlZROYC04A5rsu3gx2bCiF2qA9X/hGqXbu97c685FGkrppEgUQ5/u326mNuk4ipr+fYscNUlJVw5OBeqg/t52TlPuqPHoDjB4joMcwPb+J0dhqnMAeYJyLTgd3AtRbHo+zM5tUOKgx4e2LiZRKRiAgSOieR0DkJBgxtZ5De8+8q314yxnxmjJnsul5ujJlojBnkunTTT00pl8zrnN1GE/sA4rzUKUZUME182Hki0lRrJyYtJQublW7tVFJQqnXu6p47yDxBKgR521AfIqVbTQoqNFg9JYNS7njTHmKH3l4e0KSgQkModkFVqrkQaFS3tE1BKY8Fc+I6pcKYJgUVGkKkkU6pUKdJQYUGb3t6KKXaRZOCCg3aBVWpoNCGZhU6QqCRTqlQpyUFpZRSjTQpKKWUaqRJQalwVzjPOePn7CTnZeE8qyNSFtI2BaXCmY4UV81oSUGpcNbaSHEVljQpKBXOdKS4akaTglLhTEeKq2Y0KSgVznSkuGpGk4JS4UxHiqtmtPeRUuFOR4qrJrSkoJRSqpEmBaWUUo00KSillGqkSUEppVQjTQpKKaUaiTHG6hjaTUTKgF3tfHoKcMCP4QSaxhs4oRQrhFa8oRQrhE+8/Ywxqe7uCOmk4AsRyTPG5Fgdh6c03sAJpVghtOINpVhB4wWtPlJKKdWEJgWllFKNwjkpPGd1AF7SeAMnlGKF0Io3lGIFjTd82xSUUkqdLpxLCkoppZrRpKCUUqpRWCQFEYkVkZUislZENojIL13bk0XkIxHZ4rrsanWsDUTEISL5IvKu67adY90pIutEpEBE8lzb7Bxvkoi8KSKbRGSjiIy3Y7wiMtj1mTb8HRaRn9kx1gYiMsP1G1svIq+5fnu2jFdE7nHFuUFEfubaZptYReQFESkVkfVNtrUYn4jMEpGtIrJZRCa1d79hkRSAE8AFxphRQBbwPREZB8wElhhjBgFLXLft4h5gY5Pbdo4V4HxjTFaTPtN2jvdPwAfGmCHAKJyfs+3iNcZsdn2mWcBZwHHg39gwVgARSQfuBnKMMSMABzAVG8YrIiOAW4ExOL8Dk0VkEPaK9SXge822uY1PRIbh/KyHu57zjIg42rVXY0xY/QHxwBpgLLAZ6OXa3gvYbHV8rlh6u/7hFwDvurbZMlZXPDuBlGbbbBkv0AXYgauThd3jbRLfxcBXdo4VSAf2AMk412p51xW37eIFrgWeb3L7IeB+u8UK9AfWN7ntNj5gFjCryeM+BMa3Z5/hUlJoqI4pAEqBj4wxK4AexpgSANdldytjbOJJnF/Q+ibb7BorgAEWi8hqEbnNtc2u8Q4AyoAXXdVzz4tIAvaNt8FU4DXXdVvGaowpBp4AdgMlQKUxZjH2jHc9cK6IdBOReOASoA/2jLWpluJrSMgNilzbvBY2ScEYU2ecxfDewBhX8dF2RGQyUGqMWW11LF6YYIwZDXwfuFNEzrU6oFZEAqOBvxpjsoFj2KA6ozUiEg1cDvzL6lha46rfngJkAGlAgojcbG1U7hljNgKPAR8BHwBrgVpLg/KNuNnWrvEGYZMUGhhjKoDPcNa77ReRXgCuy1ILQ2swAbhcRHYCrwMXiMgr2DNWAIwxe12XpTjrvMdg33iLgCJXSRHgTZxJwq7xgjPZrjHG7HfdtmusFwI7jDFlxpgaYD5wNjaN1xjzd2PMaGPMucBBYAs2jbWJluIrwlnSadAb2NueHYRFUhCRVBFJcl2Pw/nl3QS8A0xzPWwa8LY1EX7LGDPLGNPbGNMfZ5XBJ8aYm7FhrAAikiAinRuu46xDXo9N4zXG7AP2iMhg16aJwNfYNF6XG/i26gjsG+tuYJyIxIuI4PxsN2LTeEWku+uyL3AVzs/YlrE20VJ87wBTRSRGRDKAQcDKdu3B6gafIDXWZAL5QCHOA9bDru3dcDbobnFdJlsda7O4z+PbhmZbxoqzjn6t628D8As7x+uKLQvIc30fFgBd7Rovzo4R5UBik222jNUV2y9xnnCtB/4BxNg1XuALnCcEa4GJdvtscSapEqAGZ0lgemvxAb8AtuFsjP5+e/er01wopZRqFBbVR0oppTyjSUEppVQjTQpKKaUaaVJQSinVSJOCUkqpRpoUlGqBiNQ1m6U0oCOfReQDEalomBlXKStEWh2AUjZWZZxTowTLXJzjEm4P4j6VOoWWFJTygogkuuarH+y6/ZqI3Oq6/lcRyZMma3a4tu8Ukd+KyDLX/aNF5EMR2SYiP2l4nDFmCXAk6G9KqSY0KSjVsrhm1UfXG2MqgbuAl0RkKtDVGPM31+N/YZzrSWQC3xWRzCavtccYMx7nKNqXgGuAccCjQXs3SnlAq4+Uapnb6iNjzEcici3wF5wLtDS4zjV1eCTOue6H4ZxKA5xz0wCsAzoZY44AR0SkWkSSjHOiRqUspyUFpbwkIhHAUKAK54IyuCYh+2+cc+hkAouA2CZPO+G6rG9yveG2npwp29CkoJT3ZuCc/fMG4AURicK5otsxoFJEeuCc7lqpkKNnKEq1LM61Wl+DD4AXgB8DY4wxR0RkKfA/xphHRCQf50yx24GvvN2ZiHwBDAE6iUgRMN0Y86HP70IpL+gsqUoppRpp9ZFSSqlGmhSUUko10qSglFKqkSYFpZRSjTQpKKWUaqRJQSmlVCNNCkoppRr9f4VpT4/AyQ+hAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig4 = plt.figure()\n",
    "plt.plot(x1_new,x2_new_boundary)\n",
    "passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,'Exam2'][mask])\n",
    "failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,'Exam2'][~mask])#将标记取反，会自动改变颜色\n",
    "plt.plot(x1_new,x2_new_boundary)\n",
    "plt.xlabel('Exam1')\n",
    "plt.ylabel('Exam2')\n",
    "plt.legend((passed,failed),('passed','failed'))#加标记\n",
    "plt.show()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ef874ef1",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
